home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume14 / flex / part04 < prev    next >
Encoding:
Internet Message Format  |  1988-05-02  |  38.1 KB

  1. Subject:  v14i082:  Flex, a lex replacement, Part04/05
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Vern Paxson <vern@lbl-csam.arpa>
  7. Posting-number: Volume 14, Issue 82
  8. Archive-name: flex/part04
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then unpack
  12. # it by saving it into a file and typing "sh file".  To overwrite existing
  13. # files, type "sh file -c".  You can also feed this as standard input via
  14. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  15. # will see the following message at the end:
  16. #        "End of archive 4 (of 5)."
  17. # Contents:  scan.c.dist
  18. # Wrapped by rsalz@fig.bbn.com on Tue May  3 17:31:33 1988
  19. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  20. if test -f 'scan.c.dist' -a "${1}" != "-c" ; then 
  21.   echo shar: Will not clobber existing file \"'scan.c.dist'\"
  22. else
  23. echo shar: Extracting \"'scan.c.dist'\" \(36366 characters\)
  24. sed "s/^X//" >'scan.c.dist' <<'END_OF_FILE'
  25. X#define YY_DEFAULT_ACTION YY_FATAL_ERROR( "flex scanner jammed" );
  26. X#define FLEX_USE_ECS
  27. X#define FLEX_USE_MECS
  28. X/* A lexical scanner generated by flex */
  29. X
  30. X#include "flexskeldef.h"
  31. X
  32. X# line 1 "scan.l"
  33. X#define INITIAL 0
  34. X/* scan.l - scanner for flex input */
  35. X/*
  36. X * Copyright (c) 1987, the University of California
  37. X * 
  38. X * The United States Government has rights in this work pursuant to
  39. X * contract no. DE-AC03-76SF00098 between the United States Department of
  40. X * Energy and the University of California.
  41. X * 
  42. X * This program may be redistributed.  Enhancements and derivative works
  43. X * may be created provided the new works, if made available to the general
  44. X * public, are made available for use by anyone.
  45. X */
  46. X# line 16 "scan.l"
  47. X#include "flexdef.h"
  48. X#include "parse.h"
  49. X
  50. X#define ACTION_ECHO fprintf( temp_action_file, "%s", yytext )
  51. X#define MARK_END_OF_PROLOG fprintf( temp_action_file, "%%%% end of prolog\n" );
  52. X
  53. X#undef YY_DECL
  54. X#define YY_DECL \
  55. X    int flexscan()
  56. X
  57. X#define RETURNCHAR \
  58. X    yylval = yytext[0]; \
  59. X    return ( CHAR );
  60. X
  61. X#define RETURNNAME \
  62. X    (void) strcpy( nmstr, yytext ); \
  63. X    return ( NAME );
  64. X
  65. X#define PUT_BACK_STRING(str, start) \
  66. X    for ( i = strlen( str ) - 1; i >= start; --i ) \
  67. X        unput(str[i])
  68. X#define SECT2 2
  69. X#define SECT2PROLOG 4
  70. X#define SECT3 6
  71. X#define CODEBLOCK 8
  72. X#define PICKUPDEF 10
  73. X#define SC 12
  74. X#define CARETISBOL 14
  75. X#define NUM 16
  76. X#define QUOTE 18
  77. X#define FIRSTCCL 20
  78. X#define CCL 22
  79. X#define ACTION 24
  80. X#define RECOVER 26
  81. X#define BRACEERROR 28
  82. X#define C_COMMENT 30
  83. X#define C_COMMENT_2 32
  84. X#define ACTION_COMMENT 34
  85. X#define ACTION_STRING 36
  86. X#define PERCENT_BRACE_ACTION 38
  87. X# line 53 "scan.l"
  88. X#define YY_JAM 226
  89. X#define YY_JAM_BASE 800
  90. X#define YY_TEMPLATE 227
  91. static char l[227] =
  92. X    {   0,
  93. X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  94. X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  95. X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  96. X       -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,   -2,
  97. X       14,    7,   13,   11,    7,   12,   14,   14,   14,   10,
  98. X       46,   39,   40,   32,   46,   45,   30,   46,   46,   46,
  99. X       39,   28,   46,   45,   31,    0,   27,   99,    0,   21,
  100. X        0,   23,   22,   24,   52,   48,   49,   51,   53,   67,
  101. X       68,   65,   64,   66,   54,   56,   55,   54,   60,   59,
  102. X       60,   60,   62,   62,   62,   63,   76,   80,   79,   81,
  103. X
  104. X       81,   74,   75,    0,   25,   70,   69,   17,   19,   18,
  105. X       89,   91,   90,   83,   85,   84,   92,   94,   95,   96,
  106. X       72,   72,   73,   72,    7,   11,    0,    7,    1,    0,
  107. X        2,    0,    8,    4,    5,    0,    3,   10,   39,   40,
  108. X        0,    0,   35,    0,    0,   97,   97,    0,   34,   33,
  109. X       34,    0,   39,   28,    0,    0,    0,   42,   38,   26,
  110. X        0,   23,   50,   51,   64,   98,   98,    0,   57,   58,
  111. X       61,   76,    0,   78,    0,   77,   15,   87,   83,   82,
  112. X       92,   93,   71,    1,    0,    9,    8,    0,    0,    6,
  113. X       36,    0,   37,   43,    0,    0,   97,   34,   34,   44,
  114. X
  115. X       29,    0,   36,    0,   29,    0,   42,    0,   20,   98,
  116. X        0,   16,    0,   88,   71,    0,    0,   97,   98,    0,
  117. X        0,   97,   98,    4,    0,    0
  118. X    } ;
  119. X
  120. static char e[128] =
  121. X    {   0,
  122. X        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  123. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  124. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  125. X        1,    2,    1,    4,    5,    6,    7,    1,    8,    9,
  126. X        9,   10,    9,   11,   12,    9,   13,   14,   15,   15,
  127. X       15,   15,   15,   15,   15,   15,   15,    1,    1,   16,
  128. X        1,   17,    9,    1,   23,   22,   22,   22,   22,   22,
  129. X       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
  130. X       22,   24,   25,   26,   22,   22,   22,   27,   22,   22,
  131. X       18,   19,   20,   21,   22,    1,   23,   22,   22,   22,
  132. X
  133. X       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
  134. X       22,   22,   22,   24,   25,   26,   22,   22,   22,   27,
  135. X       22,   22,   28,   29,   30,    1,    1
  136. X    } ;
  137. X
  138. static char m[31] =
  139. X    {   0,
  140. X        1,    2,    3,    4,    1,    1,    1,    5,    1,    6,
  141. X        1,    1,    5,    7,    7,    1,    1,    1,    8,    9,
  142. X        1,    7,    7,    7,    7,    7,    7,    5,    1,   10
  143. X    } ;
  144. X
  145. static short int b[276] =
  146. X    {   0,
  147. X        0,   26,   52,   80,  286,  285,    0,    0,  284,    1,
  148. X        3,    7,   99,  116,  265,  264,  141,  169,   11,   13,
  149. X        0,   22,   25,   47,  197,  225,  281,  280,    8,   10,
  150. X       32,   54,   66,   69,   75,   85,   88,   99,  110,  112,
  151. X      800,  280,  800,    0,   44,  800,  277,  104,  269,    0,
  152. X      800,  144,  800,  800,   71,  800,  800,  259,   83,  242,
  153. X      268,  800,  270,  266,  800,  271,    0,  800,  270,  800,
  154. X       33,    0,  270,  800,  800,  800,  242,    0,  800,  800,
  155. X      800,  800,   91,  800,  800,  800,  800,  114,  800,  800,
  156. X      116,  250,  800,    0,  136,  800,    0,  800,  800,  126,
  157. X
  158. X      251,  800,  800,  257,  800,  800,  800,  150,  800,  246,
  159. X      151,  800,  245,    0,  800,  241,    0,  800,  800,    0,
  160. X      249,  156,  800,  145,  249,    0,  247,  162,  800,  246,
  161. X      800,  245,    0,  219,  800,  234,  800,    0,  167,  800,
  162. X      206,  229,  800,  147,  165,  800,  162,    0,    0,  800,
  163. X      284,  165,  313,  800,  178,  179,  184,    0,  800,  800,
  164. X      218,    0,  800,    0,  178,  800,  180,    0,  800,  800,
  165. X      800,    0,  190,  800,    0,  800,  216,  187,    0,  800,
  166. X        0,  800,    0,  800,  185,  800,    0,  139,  146,  800,
  167. X      800,  133,  800,  800,  188,  100,  197,    0,    0,  800,
  168. X
  169. X      800,  210,  201,  213,  800,  212,    0,   97,  800,  203,
  170. X       91,  800,   74,  800,    0,   51,  216,  209,  225,   34,
  171. X      227,  800,  800,  800,  224,  800,  342,  352,  362,  372,
  172. X      382,  392,  402,  412,  422,  432,  442,  452,  462,  472,
  173. X      482,  492,  502,  512,   13,  522,  532,  542,   11,  552,
  174. X      562,  572,  582,  592,  602,    0,  612,  622,  632,  642,
  175. X      651,  661,  671,  681,  691,  701,  711,  721,  731,  740,
  176. X      750,  760,  770,  780,  790
  177. X    } ;
  178. X
  179. static short int d[276] =
  180. X    {   0,
  181. X      227,  227,  228,  228,  229,  229,  230,  230,  231,  231,
  182. X      232,  232,  233,  233,  226,  226,  234,  234,  235,  235,
  183. X      236,  236,  237,  237,  238,  238,  239,  239,  226,  226,
  184. X      240,  240,  241,  241,  242,  242,  243,  243,  244,  244,
  185. X      226,  226,  226,  245,  246,  226,  247,  248,  226,  249,
  186. X      226,  226,  226,  226,  226,  226,  226,  250,  251,  252,
  187. X      253,  226,  226,  226,  226,  229,  254,  226,  231,  226,
  188. X      231,  255,  226,  226,  226,  226,  226,  256,  226,  226,
  189. X      226,  226,  226,  226,  226,  226,  226,  251,  226,  226,
  190. X      257,  258,  226,  259,  251,  226,  260,  226,  226,  261,
  191. X
  192. X      226,  226,  226,  239,  226,  226,  226,  240,  226,  226,
  193. X      241,  226,  226,  262,  226,  226,  263,  226,  226,  264,
  194. X      244,  244,  226,  244,  226,  245,  246,  246,  226,  247,
  195. X      226,  265,  266,  226,  226,  267,  226,  249,  226,  226,
  196. X      226,  268,  226,  250,  250,  226,  226,  251,  269,  226,
  197. X      269,  253,  253,  226,  253,  253,  270,  271,  226,  226,
  198. X      272,  255,  226,  256,  226,  226,  226,  257,  226,  226,
  199. X      226,  260,  261,  226,  261,  226,  273,  274,  262,  226,
  200. X      263,  226,  275,  226,  265,  226,  266,  226,  267,  226,
  201. X      226,  268,  226,  226,  250,  250,  226,  269,  151,  226,
  202. X
  203. X      226,  253,  253,  270,  226,  270,  271,  272,  226,  226,
  204. X      273,  226,  274,  226,  275,  226,  250,  226,  226,  226,
  205. X      250,  226,  226,  226,  250,-32767,  226,  226,  226,  226,
  206. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  207. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  208. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  209. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  210. X      226,  226,  226,  226,  226
  211. X    } ;
  212. X
  213. static short int n[831] =
  214. X    {   0,
  215. X      226,   42,   43,   70,   73,   74,  164,   71,   73,   74,
  216. X      106,   90,  106,   86,   87,   86,   87,  138,   91,  126,
  217. X       92,   44,   44,   44,   44,   44,   44,   45,   46,   88,
  218. X       47,   88,   48,   90,  109,   70,   94,  107,   49,  107,
  219. X       91,  110,   92,   95,   96,  128,  129,   50,   50,   50,
  220. X       50,   50,   50,   52,   53,   54,  109,   55,   94,  224,
  221. X       56,   56,  161,  110,   56,   95,   96,   57,  112,   58,
  222. X       59,  112,  143,  143,  220,  113,  214,  115,  113,   60,
  223. X       56,   61,   62,   54,  116,   55,   63,  115,   56,   56,
  224. X      118,  119,   64,  212,  116,   57,  147,   58,   59,  209,
  225. X
  226. X       65,  118,  119,  148,  165,  165,  120,   60,   56,   76,
  227. X      133,  122,  123,  122,  123,   77,  124,  120,  124,  144,
  228. X       78,   78,   78,   78,   78,   78,   76,  147,  134,  167,
  229. X      135,  136,   77,  174,  148,  193,  168,   78,   78,   78,
  230. X       78,   78,   78,   81,  175,  139,  140,  226,  190,  147,
  231. X      141,   82,  226,  226,   83,   83,  148,  122,  226,  226,
  232. X      226,  216,  124,  128,  129,  145,  194,  201,  139,  140,
  233. X       84,   81,  142,  141,  183,  197,  197,  202,  195,   82,
  234. X      201,  201,   83,   83,  144,  196,  205,  186,  159,  214,
  235. X      202,  165,  165,  210,  210,  142,  206,  174,   84,   98,
  236. X
  237. X       99,  217,  217,  201,  100,  203,  145,  194,  175,  101,
  238. X      218,  218,  201,  202,  205,  205,  219,  219,  212,  226,
  239. X      209,  192,  222,  222,  102,  206,  103,   98,   99,  221,
  240. X      221,  193,  100,  191,  145,  194,  190,  101,  223,  223,
  241. X      225,  225,  145,  194,  188,  145,  194,  186,  131,  184,
  242. X      125,  226,  102,  180,  103,  150,  150,  178,  177,  105,
  243. X      176,  170,  163,  151,  151,  151,  151,  151,  151,  153,
  244. X      154,   73,   70,   67,  155,  159,  158,  145,  137,  131,
  245. X      156,  125,  105,  105,   79,   79,   70,   67,   67,  226,
  246. X      226,  226,  226,  226,  226,  226,  157,  199,  199,  226,
  247. X
  248. X      226,  226,  226,  226,  226,  199,  199,  199,  199,  199,
  249. X      199,  226,  226,  200,  153,  154,  226,  226,  226,  155,
  250. X      226,  226,  226,  226,  226,  156,  226,  226,  226,  226,
  251. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  252. X      226,  157,   41,   41,   41,   41,   41,   41,   41,   41,
  253. X       41,   41,   51,   51,   51,   51,   51,   51,   51,   51,
  254. X       51,   51,   66,   66,   66,   66,   66,   66,   66,   66,
  255. X       66,   66,   68,   68,   68,   68,   68,   68,   68,   68,
  256. X       68,   68,   69,   69,   69,   69,   69,   69,   69,   69,
  257. X       69,   69,   72,   72,   72,   72,   72,   72,   72,   72,
  258. X
  259. X       72,   72,   75,   75,  226,   75,   75,   75,   75,   75,
  260. X       75,   75,   80,   80,   80,   80,   80,   80,   80,   80,
  261. X       80,   80,   85,   85,   85,   85,   85,   85,   85,   85,
  262. X       85,   85,   89,   89,  226,   89,   89,   89,   89,   89,
  263. X       89,   89,   93,   93,  226,   93,   93,   93,   93,   93,
  264. X       93,   93,   97,   97,   97,   97,   97,   97,   97,   97,
  265. X       97,   97,  104,  104,  104,  104,  104,  104,  104,  104,
  266. X      104,  104,  108,  108,  108,  108,  108,  108,  108,  108,
  267. X      108,  108,  111,  111,  111,  111,  111,  111,  111,  111,
  268. X      111,  111,  114,  114,  114,  114,  114,  114,  114,  114,
  269. X
  270. X      114,  114,  117,  117,  117,  117,  117,  117,  117,  117,
  271. X      117,  117,  121,  121,  121,  121,  121,  121,  121,  121,
  272. X      121,  121,  127,  127,  127,  127,  127,  127,  127,  127,
  273. X      127,  127,  130,  130,  130,  130,  130,  130,  130,  130,
  274. X      130,  130,  132,  132,  132,  132,  132,  132,  132,  132,
  275. X      132,  132,  144,  144,  226,  144,  144,  144,  144,  144,
  276. X      226,  144,  146,  146,  226,  146,  146,  146,  146,  146,
  277. X      146,  146,  149,  149,  226,  149,  149,  149,  149,  149,
  278. X      149,  149,  152,  152,  152,  152,  152,  152,  152,  152,
  279. X      152,  152,  160,  226,  226,  160,  160,  160,  160,  160,
  280. X
  281. X      160,  160,  162,  162,  226,  162,  162,  162,  162,  162,
  282. X      162,  162,  166,  166,  226,  166,  166,  166,  166,  166,
  283. X      166,  166,  169,  169,  226,  169,  169,  169,  169,  169,
  284. X      169,  169,  171,  171,  226,  171,  171,  171,  171,  171,
  285. X      226,  171,  172,  172,  226,  226,  226,  172,  172,  172,
  286. X      172,  173,  173,  226,  173,  173,  173,  173,  173,  173,
  287. X      173,  179,  179,  226,  179,  179,  226,  179,  179,  179,
  288. X      179,  181,  181,  226,  226,  181,  181,  181,  226,  181,
  289. X      181,  182,  182,  226,  182,  182,  182,  182,  182,  182,
  290. X      182,  185,  185,  185,  185,  185,  185,  185,  185,  185,
  291. X
  292. X      185,  187,  187,  226,  187,  187,  187,  187,  187,  187,
  293. X      187,  189,  189,  189,  189,  189,  189,  189,  189,  189,
  294. X      189,  192,  192,  192,  192,  192,  192,  192,  192,  192,
  295. X      192,  198,  198,  226,  198,  198,  198,  198,  198,  198,
  296. X      204,  204,  204,  204,  204,  204,  204,  204,  204,  204,
  297. X      207,  207,  226,  207,  207,  207,  207,  207,  207,  207,
  298. X      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
  299. X      211,  211,  211,  211,  211,  211,  211,  211,  211,  211,
  300. X      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
  301. X      215,  215,  226,  215,  215,  215,  215,  215,  215,  215,
  302. X
  303. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  304. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  305. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226
  306. X    } ;
  307. X
  308. static short int c[831] =
  309. X    {   0,
  310. X        0,    1,    1,   10,   11,   11,  256,   10,   12,   12,
  311. X       29,   21,   30,   19,   19,   20,   20,  249,   21,  245,
  312. X       21,    1,    1,    1,    1,    1,    1,    2,    2,   19,
  313. X        2,   20,    2,   22,   31,   71,   23,   29,    2,   30,
  314. X       22,   31,   22,   23,   23,   45,   45,    2,    2,    2,
  315. X        2,    2,    2,    3,    3,    3,   32,    3,   24,  220,
  316. X        3,    3,   71,   32,    3,   24,   24,    3,   33,    3,
  317. X        3,   34,   55,   55,  216,   33,  213,   35,   34,    3,
  318. X        3,    4,    4,    4,   35,    4,    4,   36,    4,    4,
  319. X       37,   37,    4,  211,   36,    4,   59,    4,    4,  208,
  320. X
  321. X        4,   38,   38,   59,   83,   83,   37,    4,    4,   13,
  322. X       48,   39,   39,   40,   40,   13,   39,   38,   40,  196,
  323. X       13,   13,   13,   13,   13,   13,   14,   88,   48,   91,
  324. X       48,   48,   14,  100,   88,  192,   91,   14,   14,   14,
  325. X       14,   14,   14,   17,  100,   52,   52,  124,  189,   95,
  326. X       52,   17,  108,  111,   17,   17,   95,  122,  122,  108,
  327. X      111,  188,  122,  128,  128,  144,  144,  152,  139,  139,
  328. X       17,   18,   52,  139,  124,  147,  147,  152,  145,   18,
  329. X      155,  156,   18,   18,  145,  145,  157,  185,  156,  178,
  330. X      155,  165,  165,  167,  167,  139,  157,  173,   18,   25,
  331. X
  332. X       25,  195,  195,  203,   25,  155,  195,  195,  173,   25,
  333. X      197,  197,  202,  203,  206,  204,  210,  210,  177,  202,
  334. X      161,  206,  218,  218,   25,  204,   25,   26,   26,  217,
  335. X      217,  142,   26,  141,  217,  217,  136,   26,  219,  219,
  336. X      221,  221,  225,  225,  134,  221,  221,  132,  130,  127,
  337. X      125,  121,   26,  116,   26,   60,   60,  113,  110,  104,
  338. X      101,   92,   77,   60,   60,   60,   60,   60,   60,   61,
  339. X       61,   73,   69,   66,   61,   64,   63,   58,   49,   47,
  340. X       61,   42,   28,   27,   16,   15,    9,    6,    5,    0,
  341. X        0,    0,    0,    0,    0,    0,   61,  151,  151,    0,
  342. X
  343. X        0,    0,    0,    0,    0,  151,  151,  151,  151,  151,
  344. X      151,    0,    0,  151,  153,  153,    0,    0,    0,  153,
  345. X        0,    0,    0,    0,    0,  153,    0,    0,    0,    0,
  346. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  347. X        0,  153,  227,  227,  227,  227,  227,  227,  227,  227,
  348. X      227,  227,  228,  228,  228,  228,  228,  228,  228,  228,
  349. X      228,  228,  229,  229,  229,  229,  229,  229,  229,  229,
  350. X      229,  229,  230,  230,  230,  230,  230,  230,  230,  230,
  351. X      230,  230,  231,  231,  231,  231,  231,  231,  231,  231,
  352. X      231,  231,  232,  232,  232,  232,  232,  232,  232,  232,
  353. X
  354. X      232,  232,  233,  233,    0,  233,  233,  233,  233,  233,
  355. X      233,  233,  234,  234,  234,  234,  234,  234,  234,  234,
  356. X      234,  234,  235,  235,  235,  235,  235,  235,  235,  235,
  357. X      235,  235,  236,  236,    0,  236,  236,  236,  236,  236,
  358. X      236,  236,  237,  237,    0,  237,  237,  237,  237,  237,
  359. X      237,  237,  238,  238,  238,  238,  238,  238,  238,  238,
  360. X      238,  238,  239,  239,  239,  239,  239,  239,  239,  239,
  361. X      239,  239,  240,  240,  240,  240,  240,  240,  240,  240,
  362. X      240,  240,  241,  241,  241,  241,  241,  241,  241,  241,
  363. X      241,  241,  242,  242,  242,  242,  242,  242,  242,  242,
  364. X
  365. X      242,  242,  243,  243,  243,  243,  243,  243,  243,  243,
  366. X      243,  243,  244,  244,  244,  244,  244,  244,  244,  244,
  367. X      244,  244,  246,  246,  246,  246,  246,  246,  246,  246,
  368. X      246,  246,  247,  247,  247,  247,  247,  247,  247,  247,
  369. X      247,  247,  248,  248,  248,  248,  248,  248,  248,  248,
  370. X      248,  248,  250,  250,    0,  250,  250,  250,  250,  250,
  371. X        0,  250,  251,  251,    0,  251,  251,  251,  251,  251,
  372. X      251,  251,  252,  252,    0,  252,  252,  252,  252,  252,
  373. X      252,  252,  253,  253,  253,  253,  253,  253,  253,  253,
  374. X      253,  253,  254,    0,    0,  254,  254,  254,  254,  254,
  375. X
  376. X      254,  254,  255,  255,    0,  255,  255,  255,  255,  255,
  377. X      255,  255,  257,  257,    0,  257,  257,  257,  257,  257,
  378. X      257,  257,  258,  258,    0,  258,  258,  258,  258,  258,
  379. X      258,  258,  259,  259,    0,  259,  259,  259,  259,  259,
  380. X        0,  259,  260,  260,    0,    0,    0,  260,  260,  260,
  381. X      260,  261,  261,    0,  261,  261,  261,  261,  261,  261,
  382. X      261,  262,  262,    0,  262,  262,    0,  262,  262,  262,
  383. X      262,  263,  263,    0,    0,  263,  263,  263,    0,  263,
  384. X      263,  264,  264,    0,  264,  264,  264,  264,  264,  264,
  385. X      264,  265,  265,  265,  265,  265,  265,  265,  265,  265,
  386. X
  387. X      265,  266,  266,    0,  266,  266,  266,  266,  266,  266,
  388. X      266,  267,  267,  267,  267,  267,  267,  267,  267,  267,
  389. X      267,  268,  268,  268,  268,  268,  268,  268,  268,  268,
  390. X      268,  269,  269,    0,  269,  269,  269,  269,  269,  269,
  391. X      270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
  392. X      271,  271,    0,  271,  271,  271,  271,  271,  271,  271,
  393. X      272,  272,  272,  272,  272,  272,  272,  272,  272,  272,
  394. X      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
  395. X      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
  396. X      275,  275,    0,  275,  275,  275,  275,  275,  275,  275,
  397. X
  398. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  399. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226,
  400. X      226,  226,  226,  226,  226,  226,  226,  226,  226,  226
  401. X    } ;
  402. X
  403. X
  404. X/* these declarations have to come after the section 1 code or lint gets
  405. X * confused about whether the variables are used
  406. X */
  407. XFILE *yyin = stdin, *yyout = stdout;
  408. X
  409. X/* these variables are all declared out here so that section 3 code can
  410. X * manipulate them
  411. X */
  412. static int yy_start, yy_b_buf_p, yy_c_buf_p, yy_e_buf_p;
  413. static int yy_saw_eof, yy_init = 1;
  414. X
  415. X/* yy_ch_buf has to be 1 character longer than YY_BUF_SIZE, since when
  416. X * setting up yytext we can try to put a '\0' just past the end of the
  417. X * matched text
  418. X */
  419. static char yy_ch_buf[YY_BUF_SIZE + 1];
  420. static int yy_st_buf[YY_BUF_SIZE];
  421. static char yy_hold_char;
  422. char *yytext;
  423. static int yyleng;
  424. X
  425. YY_DECL
  426. X    {
  427. X    int yy_n_chars, yy_lp, yy_iii, yy_buf_pos, yy_act;
  428. X
  429. X
  430. X    static int bracelevel, didadef;
  431. X    int i, cclval;
  432. X    char nmdef[MAXLINE], myesc();
  433. X
  434. X
  435. X    if ( yy_init )
  436. X    {
  437. X    YY_INIT;
  438. X    yy_start = 1;
  439. X    yy_init = 0;
  440. X    }
  441. X
  442. X    goto get_next_token;
  443. X
  444. do_action:
  445. X    for ( ; ; )
  446. X    {
  447. X    YY_DO_BEFORE_ACTION
  448. X
  449. X#ifdef FLEX_DEBUG
  450. X    fprintf( stderr, "--accepting rule #%d\n", yy_act );
  451. X#endif
  452. X    switch ( yy_act )
  453. X        {
  454. case 1:
  455. X# line 58 "scan.l"
  456. X++linenum; ECHO; /* indented code */
  457. X    YY_BREAK
  458. case 2:
  459. X# line 59 "scan.l"
  460. X++linenum; ECHO; /* treat as a comment */
  461. X    YY_BREAK
  462. case 3:
  463. X# line 60 "scan.l"
  464. ECHO; BEGIN(C_COMMENT);
  465. X    YY_BREAK
  466. case 4:
  467. X# line 61 "scan.l"
  468. return ( SCDECL );
  469. X    YY_BREAK
  470. case 5:
  471. X# line 62 "scan.l"
  472. return ( XSCDECL );
  473. X    YY_BREAK
  474. case 6:
  475. X# line 63 "scan.l"
  476. X++linenum; line_directive_out( stdout ); BEGIN(CODEBLOCK);
  477. X    YY_BREAK
  478. case 7:
  479. X# line 64 "scan.l"
  480. return ( WHITESPACE );
  481. X    YY_BREAK
  482. case 8:
  483. X# line 66 "scan.l"
  484. X{
  485. X            sectnum = 2;
  486. X            line_directive_out( stdout );
  487. X            BEGIN(SECT2PROLOG);
  488. X            return ( SECTEND );
  489. X            }
  490. X    YY_BREAK
  491. case 9:
  492. X# line 73 "scan.l"
  493. X{
  494. X            fprintf( stderr,
  495. X                 "old-style lex command at line %d ignored:\n\t%s",
  496. X                 linenum, yytext );
  497. X            ++linenum;
  498. X            }
  499. X    YY_BREAK
  500. case 10:
  501. X# line 80 "scan.l"
  502. X{
  503. X            (void) strcpy( nmstr, yytext );
  504. X            didadef = false;
  505. X            BEGIN(PICKUPDEF);
  506. X            }
  507. X    YY_BREAK
  508. case 11:
  509. X# line 86 "scan.l"
  510. RETURNNAME;
  511. X    YY_BREAK
  512. case 12:
  513. X# line 87 "scan.l"
  514. X++linenum; /* allows blank lines in section 1 */
  515. X    YY_BREAK
  516. case 13:
  517. X# line 88 "scan.l"
  518. X++linenum; return ( '\n' );
  519. X    YY_BREAK
  520. case 14:
  521. X# line 89 "scan.l"
  522. synerr( "illegal character" ); BEGIN(RECOVER);
  523. X    YY_BREAK
  524. case 15:
  525. X# line 92 "scan.l"
  526. ECHO; BEGIN(0);
  527. X    YY_BREAK
  528. case 16:
  529. X# line 93 "scan.l"
  530. X++linenum; ECHO; BEGIN(0);
  531. X    YY_BREAK
  532. case 17:
  533. X# line 94 "scan.l"
  534. ECHO;
  535. X    YY_BREAK
  536. case 18:
  537. X# line 95 "scan.l"
  538. ECHO;
  539. X    YY_BREAK
  540. case 19:
  541. X# line 96 "scan.l"
  542. X++linenum; ECHO;
  543. X    YY_BREAK
  544. case 20:
  545. X# line 98 "scan.l"
  546. X++linenum; BEGIN(0);
  547. X    YY_BREAK
  548. case 21:
  549. X# line 99 "scan.l"
  550. X++linenum; ECHO;
  551. X    YY_BREAK
  552. case 22:
  553. X# line 101 "scan.l"
  554. X/* separates name and definition */
  555. X    YY_BREAK
  556. case 23:
  557. X# line 103 "scan.l"
  558. X{
  559. X            (void) strcpy( nmdef, yytext );
  560. X
  561. X            for ( i = strlen( nmdef ) - 1;
  562. X                  i >= 0 &&
  563. X                  nmdef[i] == ' ' || nmdef[i] == '\t';
  564. X                  --i )
  565. X                ;
  566. X
  567. X            nmdef[i + 1] = '\0';
  568. X
  569. X                        ndinstal( nmstr, nmdef );
  570. X            didadef = true;
  571. X            }
  572. X    YY_BREAK
  573. case 24:
  574. X# line 118 "scan.l"
  575. X{
  576. X            if ( ! didadef )
  577. X                synerr( "incomplete name definition" );
  578. X            BEGIN(0);
  579. X            ++linenum;
  580. X            }
  581. X    YY_BREAK
  582. case 25:
  583. X# line 125 "scan.l"
  584. X++linenum; BEGIN(0); RETURNNAME;
  585. X    YY_BREAK
  586. case 26:
  587. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  588. yy_c_buf_p -= 1;
  589. YY_DO_BEFORE_ACTION; /* set up yytext again */
  590. X# line 128 "scan.l"
  591. X{
  592. X            ++linenum;
  593. X            ACTION_ECHO;
  594. X            MARK_END_OF_PROLOG;
  595. X            BEGIN(SECT2);
  596. X            }
  597. X    YY_BREAK
  598. case 27:
  599. X# line 135 "scan.l"
  600. X++linenum; ACTION_ECHO;
  601. X    YY_BREAK
  602. case 28:
  603. X# line 137 "scan.l"
  604. X++linenum; /* allow blank lines in section 2 */
  605. X    YY_BREAK
  606. X    /* this horrible mess of a rule matches indented lines which
  607. X     * do not contain "/*".  We need to make the distinction because
  608. X     * otherwise this rule will be taken instead of the rule which
  609. X     * matches the beginning of comments like this one
  610. X     */
  611. case 29:
  612. X# line 144 "scan.l"
  613. X{
  614. X            synerr( "indented code found outside of action" );
  615. X            ++linenum;
  616. X            }
  617. X    YY_BREAK
  618. case 30:
  619. X# line 149 "scan.l"
  620. BEGIN(SC); return ( '<' );
  621. X    YY_BREAK
  622. case 31:
  623. X# line 150 "scan.l"
  624. return ( '^' );
  625. X    YY_BREAK
  626. case 32:
  627. X# line 151 "scan.l"
  628. BEGIN(QUOTE); return ( '"' );
  629. X    YY_BREAK
  630. case 33:
  631. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  632. yy_c_buf_p = yy_b_buf_p;
  633. YY_DO_BEFORE_ACTION; /* set up yytext again */
  634. X# line 152 "scan.l"
  635. BEGIN(NUM); return ( '{' );
  636. X    YY_BREAK
  637. case 34:
  638. X# line 153 "scan.l"
  639. BEGIN(BRACEERROR);
  640. X    YY_BREAK
  641. case 35:
  642. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  643. yy_c_buf_p = yy_b_buf_p;
  644. YY_DO_BEFORE_ACTION; /* set up yytext again */
  645. X# line 154 "scan.l"
  646. return ( '$' );
  647. X    YY_BREAK
  648. case 36:
  649. X# line 156 "scan.l"
  650. X{
  651. X            bracelevel = 1;
  652. X            BEGIN(PERCENT_BRACE_ACTION);
  653. X            return ( '\n' );
  654. X            }
  655. X    YY_BREAK
  656. case 37:
  657. X# line 161 "scan.l"
  658. X++linenum; return ( '\n' );
  659. X    YY_BREAK
  660. case 38:
  661. X# line 163 "scan.l"
  662. ACTION_ECHO; BEGIN(C_COMMENT_2);
  663. X    YY_BREAK
  664. case 39:
  665. X# line 165 "scan.l"
  666. X{ /* needs to be separate from following rule due to
  667. X               * bug with trailing context
  668. X               */
  669. X            bracelevel = 0;
  670. X            BEGIN(ACTION);
  671. X            return ( '\n' );
  672. X            }
  673. X    YY_BREAK
  674. case 40:
  675. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  676. yy_c_buf_p -= 1;
  677. YY_DO_BEFORE_ACTION; /* set up yytext again */
  678. X# line 173 "scan.l"
  679. X{
  680. X            bracelevel = 0;
  681. X            BEGIN(ACTION);
  682. X            return ( '\n' );
  683. X            }
  684. X    YY_BREAK
  685. case 41:
  686. X# line 179 "scan.l"
  687. X++linenum; return ( '\n' );
  688. X    YY_BREAK
  689. case 42:
  690. X# line 181 "scan.l"
  691. X{
  692. X            /* guarantee that the SECT3 rule will have something
  693. X             * to match
  694. X             */
  695. X            yyless(1);
  696. X            sectnum = 3;
  697. X            BEGIN(SECT3);
  698. X            return ( EOF ); /* to stop the parser */
  699. X            }
  700. X    YY_BREAK
  701. case 43:
  702. X# line 191 "scan.l"
  703. X{
  704. X            (void) strcpy( nmstr, yytext );
  705. X
  706. X            /* check to see if we've already encountered this ccl */
  707. X            if ( (cclval = ccllookup( nmstr )) )
  708. X                {
  709. X                yylval = cclval;
  710. X                ++cclreuse;
  711. X                return ( PREVCCL );
  712. X                }
  713. X            else
  714. X                {
  715. X                /* we fudge a bit.  We know that this ccl will
  716. X                 * soon be numbered as lastccl + 1 by cclinit
  717. X                 */
  718. X                cclinstal( nmstr, lastccl + 1 );
  719. X
  720. X                /* push back everything but the leading bracket
  721. X                 * so the ccl can be rescanned
  722. X                 */
  723. X                PUT_BACK_STRING(nmstr, 1);
  724. X
  725. X                BEGIN(FIRSTCCL);
  726. X                return ( '[' );
  727. X                }
  728. X            }
  729. X    YY_BREAK
  730. case 44:
  731. X# line 218 "scan.l"
  732. X{
  733. X            register char *nmdefptr;
  734. X            char *ndlookup();
  735. X
  736. X            (void) strcpy( nmstr, yytext );
  737. X            nmstr[yyleng - 1] = '\0';  /* chop trailing brace */
  738. X
  739. X            /* lookup from "nmstr + 1" to chop leading brace */
  740. X            if ( ! (nmdefptr = ndlookup( nmstr + 1 )) )
  741. X                synerr( "undefined {name}" );
  742. X
  743. X            else
  744. X                { /* push back name surrounded by ()'s */
  745. X                unput(')');
  746. X                PUT_BACK_STRING(nmdefptr, 0);
  747. X                unput('(');
  748. X                }
  749. X            }
  750. X    YY_BREAK
  751. case 45:
  752. X# line 237 "scan.l"
  753. return ( yytext[0] );
  754. X    YY_BREAK
  755. case 46:
  756. X# line 238 "scan.l"
  757. RETURNCHAR;
  758. X    YY_BREAK
  759. case 47:
  760. X# line 239 "scan.l"
  761. X++linenum; return ( '\n' );
  762. X    YY_BREAK
  763. case 48:
  764. X# line 242 "scan.l"
  765. return ( ',' );
  766. X    YY_BREAK
  767. case 49:
  768. X# line 243 "scan.l"
  769. BEGIN(SECT2); return ( '>' );
  770. X    YY_BREAK
  771. case 50:
  772. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  773. yy_c_buf_p = yy_b_buf_p;
  774. YY_DO_BEFORE_ACTION; /* set up yytext again */
  775. X# line 244 "scan.l"
  776. BEGIN(CARETISBOL); return ( '>' );
  777. X    YY_BREAK
  778. case 51:
  779. X# line 245 "scan.l"
  780. RETURNNAME;
  781. X    YY_BREAK
  782. case 52:
  783. X# line 246 "scan.l"
  784. synerr( "bad start condition name" );
  785. X    YY_BREAK
  786. case 53:
  787. X# line 248 "scan.l"
  788. BEGIN(SECT2); return ( '^' );
  789. X    YY_BREAK
  790. case 54:
  791. X# line 251 "scan.l"
  792. RETURNCHAR;
  793. X    YY_BREAK
  794. case 55:
  795. X# line 252 "scan.l"
  796. BEGIN(SECT2); return ( '"' );
  797. X    YY_BREAK
  798. case 56:
  799. X# line 254 "scan.l"
  800. X{
  801. X            synerr( "missing quote" );
  802. X            BEGIN(SECT2);
  803. X            ++linenum;
  804. X            return ( '"' );
  805. X            }
  806. X    YY_BREAK
  807. case 57:
  808. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  809. yy_c_buf_p = yy_b_buf_p;
  810. YY_DO_BEFORE_ACTION; /* set up yytext again */
  811. X# line 262 "scan.l"
  812. BEGIN(CCL); return ( '^' );
  813. X    YY_BREAK
  814. case 58:
  815. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  816. yy_c_buf_p = yy_b_buf_p;
  817. YY_DO_BEFORE_ACTION; /* set up yytext again */
  818. X# line 263 "scan.l"
  819. return ( '^' );
  820. X    YY_BREAK
  821. case 59:
  822. X# line 264 "scan.l"
  823. BEGIN(CCL); yylval = '-'; return ( CHAR );
  824. X    YY_BREAK
  825. case 60:
  826. X# line 265 "scan.l"
  827. BEGIN(CCL); RETURNCHAR;
  828. X    YY_BREAK
  829. case 61:
  830. YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  831. yy_c_buf_p = yy_b_buf_p;
  832. YY_DO_BEFORE_ACTION; /* set up yytext again */
  833. X# line 267 "scan.l"
  834. return ( '-' );
  835. X    YY_BREAK
  836. case 62:
  837. X# line 268 "scan.l"
  838. RETURNCHAR;
  839. X    YY_BREAK
  840. case 63:
  841. X# line 269 "scan.l"
  842. BEGIN(SECT2); return ( ']' );
  843. X    YY_BREAK
  844. case 64:
  845. X# line 272 "scan.l"
  846. X{
  847. X            yylval = myctoi( yytext );
  848. X            return ( NUMBER );
  849. X            }
  850. X    YY_BREAK
  851. case 65:
  852. X# line 277 "scan.l"
  853. return ( ',' );
  854. X    YY_BREAK
  855. case 66:
  856. X# line 278 "scan.l"
  857. BEGIN(SECT2); return ( '}' );
  858. X    YY_BREAK
  859. case 67:
  860. X# line 280 "scan.l"
  861. X{
  862. X            synerr( "bad character inside {}'s" );
  863. X            BEGIN(SECT2);
  864. X            return ( '}' );
  865. X            }
  866. X    YY_BREAK
  867. case 68:
  868. X# line 286 "scan.l"
  869. X{
  870. X            synerr( "missing }" );
  871. X            BEGIN(SECT2);
  872. X            ++linenum;
  873. X            return ( '}' );
  874. X            }
  875. X    YY_BREAK
  876. case 69:
  877. X# line 294 "scan.l"
  878. synerr( "bad name in {}'s" ); BEGIN(SECT2);
  879. X    YY_BREAK
  880. case 70:
  881. X# line 295 "scan.l"
  882. synerr( "missing }" ); ++linenum; BEGIN(SECT2);
  883. X    YY_BREAK
  884. case 71:
  885. X# line 298 "scan.l"
  886. bracelevel = 0;
  887. X    YY_BREAK
  888. case 72:
  889. X# line 299 "scan.l"
  890. ACTION_ECHO;
  891. X    YY_BREAK
  892. case 73:
  893. X# line 300 "scan.l"
  894. X{
  895. X            ++linenum;
  896. X            ACTION_ECHO;
  897. X            if ( bracelevel == 0 )
  898. X                {
  899. X                fputs( "\tYY_BREAK\n", temp_action_file );
  900. X                BEGIN(SECT2);
  901. X                }
  902. X            }
  903. X    YY_BREAK
  904. case 74:
  905. X# line 310 "scan.l"
  906. ACTION_ECHO; ++bracelevel;
  907. X    YY_BREAK
  908. case 75:
  909. X# line 311 "scan.l"
  910. ACTION_ECHO; --bracelevel;
  911. X    YY_BREAK
  912. case 76:
  913. X# line 312 "scan.l"
  914. ACTION_ECHO;
  915. X    YY_BREAK
  916. case 77:
  917. X# line 313 "scan.l"
  918. ACTION_ECHO; BEGIN(ACTION_COMMENT);
  919. X    YY_BREAK
  920. case 78:
  921. X# line 314 "scan.l"
  922. ACTION_ECHO; /* character constant */
  923. X    YY_BREAK
  924. case 79:
  925. X# line 315 "scan.l"
  926. ACTION_ECHO; BEGIN(ACTION_STRING);
  927. X    YY_BREAK
  928. case 80:
  929. X# line 316 "scan.l"
  930. X{
  931. X            ++linenum;
  932. X            ACTION_ECHO;
  933. X            if ( bracelevel == 0 )
  934. X                {
  935. X                fputs( "\tYY_BREAK\n", temp_action_file );
  936. X                BEGIN(SECT2);
  937. X                }
  938. X            }
  939. X    YY_BREAK
  940. case 81:
  941. X# line 325 "scan.l"
  942. ACTION_ECHO;
  943. X    YY_BREAK
  944. case 82:
  945. X# line 327 "scan.l"
  946. ACTION_ECHO; BEGIN(ACTION);
  947. X    YY_BREAK
  948. case 83:
  949. X# line 328 "scan.l"
  950. ACTION_ECHO;
  951. X    YY_BREAK
  952. case 84:
  953. X# line 329 "scan.l"
  954. ACTION_ECHO;
  955. X    YY_BREAK
  956. case 85:
  957. X# line 330 "scan.l"
  958. X++linenum; ACTION_ECHO;
  959. X    YY_BREAK
  960. case 86:
  961. X# line 331 "scan.l"
  962. ACTION_ECHO;
  963. X    YY_BREAK
  964. case 87:
  965. X# line 333 "scan.l"
  966. ACTION_ECHO; BEGIN(SECT2);
  967. X    YY_BREAK
  968. case 88:
  969. X# line 334 "scan.l"
  970. X++linenum; ACTION_ECHO; BEGIN(SECT2);
  971. X    YY_BREAK
  972. case 89:
  973. X# line 335 "scan.l"
  974. ACTION_ECHO;
  975. X    YY_BREAK
  976. case 90:
  977. X# line 336 "scan.l"
  978. ACTION_ECHO;
  979. X    YY_BREAK
  980. case 91:
  981. X# line 337 "scan.l"
  982. X++linenum; ACTION_ECHO;
  983. X    YY_BREAK
  984. case 92:
  985. X# line 339 "scan.l"
  986. ACTION_ECHO;
  987. X    YY_BREAK
  988. case 93:
  989. X# line 340 "scan.l"
  990. ACTION_ECHO;
  991. X    YY_BREAK
  992. case 94:
  993. X# line 341 "scan.l"
  994. X++linenum; ACTION_ECHO;
  995. X    YY_BREAK
  996. case 95:
  997. X# line 342 "scan.l"
  998. ACTION_ECHO; BEGIN(ACTION);
  999. X    YY_BREAK
  1000. case 96:
  1001. X# line 343 "scan.l"
  1002. ACTION_ECHO;
  1003. X    YY_BREAK
  1004. case 97:
  1005. X# line 346 "scan.l"
  1006. X{
  1007. X            yylval = myesc( yytext );
  1008. X            return ( CHAR );
  1009. X            }
  1010. X    YY_BREAK
  1011. case 98:
  1012. X# line 351 "scan.l"
  1013. X{
  1014. X            yylval = myesc( yytext );
  1015. X            BEGIN(CCL);
  1016. X            return ( CHAR );
  1017. X            }
  1018. X    YY_BREAK
  1019. case 99:
  1020. X# line 358 "scan.l"
  1021. X{
  1022. X            register int numchars;
  1023. X
  1024. X            /* black magic - we know the names of a flex scanner's
  1025. X             * internal variables.  We cap the input buffer with
  1026. X             * an end-of-string and dump it to the output.
  1027. X             */
  1028. X            YY_DO_BEFORE_SCAN; /* recover from setting up yytext */
  1029. X
  1030. X#ifdef FLEX_FAST_SKEL
  1031. X            fputs( yy_c_buf_p + 1, stdout );
  1032. X#else
  1033. X            yy_ch_buf[yy_e_buf_p + 1] = '\0';
  1034. X
  1035. X            /* ignore the first character; it's the second '%'
  1036. X             * put back by the yyless(1) above
  1037. X             */
  1038. X            fputs( yy_ch_buf + yy_c_buf_p + 1, stdout );
  1039. X#endif
  1040. X
  1041. X            /* if we don't do this, the data written by write()
  1042. X             * can get overwritten when stdout is finally flushed
  1043. X             */
  1044. X            (void) fflush( stdout );
  1045. X
  1046. X            while ( (numchars = read( fileno(yyin), yy_ch_buf,
  1047. X                          YY_BUF_MAX )) > 0 )
  1048. X                (void) write( fileno(stdout), yy_ch_buf, numchars );
  1049. X    
  1050. X            if ( numchars < 0 )
  1051. X                flexerror( "fatal read error in section 3" );
  1052. X
  1053. X            return ( EOF );
  1054. X            }
  1055. X    YY_BREAK
  1056. X
  1057. case YY_NEW_FILE:
  1058. break; /* begin reading from new file */
  1059. X
  1060. case YY_DO_DEFAULT:
  1061. YY_DEFAULT_ACTION;
  1062. break;
  1063. X
  1064. case YY_END_TOK:
  1065. return ( YY_END_TOK );
  1066. X
  1067. default:
  1068. YY_FATAL_ERROR( "fatal flex scanner internal error" );
  1069. X        }
  1070. X
  1071. get_next_token:
  1072. X    {
  1073. X    register int yy_curst;
  1074. X    register char yy_sym;
  1075. X
  1076. X    YY_DO_BEFORE_SCAN
  1077. X
  1078. X    /* set up to begin running DFA */
  1079. X
  1080. X    yy_curst = yy_start;
  1081. X
  1082. X    if ( yy_ch_buf[yy_c_buf_p] == '\n' )
  1083. X        ++yy_curst;
  1084. X
  1085. X    /* yy_b_buf_p points to the position in yy_ch_buf
  1086. X     * of the start of the current run.
  1087. X     */
  1088. X
  1089. X    yy_b_buf_p = yy_c_buf_p + 1;
  1090. X
  1091. X    do /* until the machine jams */
  1092. X        {
  1093. X        if ( yy_c_buf_p == yy_e_buf_p )
  1094. X        { /* need more input */
  1095. X        if ( yy_e_buf_p >= YY_BUF_LIM )
  1096. X            { /* not enough room to do another read */
  1097. X            /* see if we can make some room for more chars */
  1098. X
  1099. X            yy_n_chars = yy_e_buf_p - yy_b_buf_p;
  1100. X
  1101. X            if ( yy_n_chars >= 0 )
  1102. X            /* shift down buffer to make room */
  1103. X            for ( yy_iii = 0; yy_iii <= yy_n_chars; ++yy_iii )
  1104. X                {
  1105. X                yy_buf_pos = yy_b_buf_p + yy_iii;
  1106. X                yy_ch_buf[yy_iii] = yy_ch_buf[yy_buf_pos];
  1107. X                yy_st_buf[yy_iii] = yy_st_buf[yy_buf_pos];
  1108. X                }
  1109. X
  1110. X            yy_b_buf_p = 0;
  1111. X            yy_e_buf_p = yy_n_chars;
  1112. X
  1113. X            if ( yy_e_buf_p >= YY_BUF_LIM )
  1114. X            YY_FATAL_ERROR( "flex input buffer overflowed" );
  1115. X
  1116. X            yy_c_buf_p = yy_e_buf_p;
  1117. X            }
  1118. X
  1119. X        else if ( yy_saw_eof )
  1120. X            {
  1121. saweof:            if ( yy_b_buf_p > yy_e_buf_p )
  1122. X            {
  1123. X            if ( yywrap() )
  1124. X                {
  1125. X                yy_act = YY_END_TOK;
  1126. X                goto do_action;
  1127. X                }
  1128. X            
  1129. X            else
  1130. X                {
  1131. X                YY_INIT;
  1132. X                yy_act = YY_NEW_FILE;
  1133. X                goto do_action;
  1134. X                }
  1135. X            }
  1136. X
  1137. X            else /* do a jam to eat up more input */
  1138. X            {
  1139. X#ifndef FLEX_INTERACTIVE_SCANNER
  1140. X            /* we're going to decrement yy_c_buf_p upon doing
  1141. X             * the jam.  In this case, that's wrong, since
  1142. X             * it points to the last non-jam character.  So
  1143. X             * we increment it now to counter the decrement.
  1144. X             */
  1145. X            ++yy_c_buf_p;
  1146. X#endif
  1147. X            break;
  1148. X            }
  1149. X            }
  1150. X
  1151. X        YY_INPUT( (yy_ch_buf + yy_c_buf_p + 1), yy_n_chars,
  1152. X              YY_MAX_LINE );
  1153. X
  1154. X        if ( yy_n_chars == YY_NULL )
  1155. X            {
  1156. X            if ( yy_saw_eof )
  1157. X    YY_FATAL_ERROR( "flex scanner saw EOF twice - shouldn't happen" );
  1158. X            yy_saw_eof = 1;
  1159. X            goto saweof;
  1160. X            }
  1161. X
  1162. X        yy_e_buf_p += yy_n_chars;
  1163. X        }
  1164. X
  1165. X        ++yy_c_buf_p;
  1166. X
  1167. X#ifdef FLEX_USE_ECS
  1168. X        yy_sym = e[yy_ch_buf[yy_c_buf_p]];
  1169. X#else
  1170. X        yy_sym = yy_ch_buf[yy_c_buf_p];
  1171. X#endif
  1172. X
  1173. X#ifdef FLEX_FULL_TABLE
  1174. X        yy_curst = n[yy_curst][yy_sym];
  1175. X
  1176. X#else /* get next state from compressed table */
  1177. X
  1178. X        while ( c[b[yy_curst] + yy_sym] != yy_curst )
  1179. X        {
  1180. X        yy_curst = d[yy_curst];
  1181. X
  1182. X#ifdef FLEX_USE_MECS
  1183. X        /* we've arrange it so that templates are never chained
  1184. X         * to one another.  This means we can afford make a
  1185. X         * very simple test to see if we need to convert to
  1186. X         * yy_sym's meta-equivalence class without worrying
  1187. X         * about erroneously looking up the meta-equivalence
  1188. X         * class twice
  1189. X         */
  1190. X
  1191. X        if ( yy_curst >= YY_TEMPLATE )
  1192. X            yy_sym = m[yy_sym];
  1193. X#endif
  1194. X        }
  1195. X
  1196. X        yy_curst = n[b[yy_curst] + yy_sym];
  1197. X
  1198. X#endif
  1199. X
  1200. X        yy_st_buf[yy_c_buf_p] = yy_curst;
  1201. X
  1202. X        }
  1203. X#ifdef FLEX_INTERACTIVE_SCANNER
  1204. X    while ( b[yy_curst] != YY_JAM_BASE );
  1205. X#else
  1206. X    while ( yy_curst != YY_JAM );
  1207. X    --yy_c_buf_p; /* put back character we jammed on */
  1208. X
  1209. X#endif
  1210. X
  1211. X    if ( yy_c_buf_p >= yy_b_buf_p )
  1212. X        { /* we matched some text */
  1213. X        yy_curst = yy_st_buf[yy_c_buf_p];
  1214. X        yy_lp = l[yy_curst];
  1215. X
  1216. X#ifdef FLEX_REJECT_ENABLED
  1217. find_rule: /* we branch to this label when doing a REJECT */
  1218. X#endif
  1219. X
  1220. X        for ( ; ; ) /* until we find what rule we matched */
  1221. X        {
  1222. X#ifdef FLEX_REJECT_ENABLED
  1223. X        if ( yy_lp && yy_lp < l[yy_curst + 1] )
  1224. X            {
  1225. X            yy_act = a[yy_lp];
  1226. X            goto do_action; /* "continue 2" */
  1227. X            }
  1228. X#else
  1229. X        if ( yy_lp )
  1230. X            {
  1231. X            yy_act = yy_lp;
  1232. X            goto do_action; /* "continue 2" */
  1233. X            }
  1234. X#endif
  1235. X
  1236. X        if ( --yy_c_buf_p < yy_b_buf_p )
  1237. X            break;
  1238. X
  1239. X        yy_curst = yy_st_buf[yy_c_buf_p];
  1240. X        yy_lp = l[yy_curst];
  1241. X        }
  1242. X        }
  1243. X
  1244. X    /* if we got this far, then we didn't find any accepting
  1245. X     * states
  1246. X     */
  1247. X
  1248. X    /* so that the default applies to the first char read */
  1249. X    ++yy_c_buf_p;
  1250. X
  1251. X    yy_act = YY_DO_DEFAULT;
  1252. X    }
  1253. X    }
  1254. X
  1255. X    /*NOTREACHED*/
  1256. X    }
  1257. X
  1258. X
  1259. static int unput( c )
  1260. char c;
  1261. X
  1262. X    {
  1263. X    YY_DO_BEFORE_SCAN; /* undo effects of setting up yytext */
  1264. X
  1265. X    if ( yy_c_buf_p == 0 )
  1266. X    {
  1267. X    register int i;
  1268. X    register int yy_buf_pos = YY_BUF_MAX;
  1269. X
  1270. X    for ( i = yy_e_buf_p; i >= yy_c_buf_p; --i )
  1271. X        {
  1272. X        yy_ch_buf[yy_buf_pos] = yy_ch_buf[i];
  1273. X        yy_st_buf[yy_buf_pos] = yy_st_buf[i];
  1274. X        --yy_buf_pos;
  1275. X        }
  1276. X
  1277. X    yy_c_buf_p = YY_BUF_MAX - yy_e_buf_p;
  1278. X    yy_e_buf_p = YY_BUF_MAX;
  1279. X    }
  1280. X
  1281. X    if ( yy_c_buf_p <= 0 )
  1282. X    YY_FATAL_ERROR( "flex scanner push-back overflow" );
  1283. X
  1284. X    if ( yy_c_buf_p >= yy_b_buf_p && yy_ch_buf[yy_c_buf_p] == '\n' )
  1285. X    yy_ch_buf[yy_c_buf_p - 1] = '\n';
  1286. X
  1287. X    yy_ch_buf[yy_c_buf_p--] = c;
  1288. X
  1289. X    YY_DO_BEFORE_ACTION; /* set up yytext again */
  1290. X    }
  1291. X
  1292. X
  1293. static int input()
  1294. X
  1295. X    {
  1296. X    int c;
  1297. X
  1298. X    YY_DO_BEFORE_SCAN
  1299. X
  1300. X    if ( yy_c_buf_p == yy_e_buf_p )
  1301. X    { /* need more input */
  1302. X    int yy_n_chars;
  1303. X
  1304. X    /* we can throw away the entire current buffer */
  1305. X    if ( yy_saw_eof )
  1306. X        {
  1307. X        if ( yywrap() )
  1308. X        return ( EOF );
  1309. X
  1310. X        YY_INIT;
  1311. X        }
  1312. X
  1313. X    yy_b_buf_p = 0;
  1314. X    YY_INPUT( yy_ch_buf, yy_n_chars, YY_MAX_LINE );
  1315. X
  1316. X    if ( yy_n_chars == YY_NULL )
  1317. X        {
  1318. X        yy_saw_eof = 1;
  1319. X
  1320. X        if ( yywrap() )
  1321. X        return ( EOF );
  1322. X
  1323. X        YY_INIT;
  1324. X
  1325. X        return ( input() );
  1326. X        }
  1327. X
  1328. X    yy_c_buf_p = -1;
  1329. X    yy_e_buf_p = yy_n_chars - 1;
  1330. X    }
  1331. X
  1332. X    c = yy_ch_buf[++yy_c_buf_p];
  1333. X
  1334. X    YY_DO_BEFORE_ACTION;
  1335. X
  1336. X    return ( c );
  1337. X    }
  1338. X# line 392 "scan.l"
  1339. X
  1340. END_OF_FILE
  1341. if test 36366 -ne `wc -c <'scan.c.dist'`; then
  1342.     echo shar: \"'scan.c.dist'\" unpacked with wrong size!
  1343. fi
  1344. # end of 'scan.c.dist'
  1345. fi
  1346. echo shar: End of archive 4 \(of 5\).
  1347. cp /dev/null ark4isdone
  1348. MISSING=""
  1349. for I in 1 2 3 4 5 ; do
  1350.     if test ! -f ark${I}isdone ; then
  1351.     MISSING="${MISSING} ${I}"
  1352.     fi
  1353. done
  1354. if test "${MISSING}" = "" ; then
  1355.     echo You have unpacked all 5 archives.
  1356.     rm -f ark[1-9]isdone
  1357. else
  1358.     echo You still need to unpack the following archives:
  1359.     echo "        " ${MISSING}
  1360. fi
  1361. ##  End of shell archive.
  1362. exit 0
  1363.